package cn.ncupyh.soft;

public class StudentTest {
    public static void main(String[] args) {
//        数组存储三个学生的信息,学号,姓名,年龄
//        要求:1.再输入一个学生的信息,要求做id唯一性判断,
//                 若有则不添加,无则添加
//             2.添加完毕后,遍历所有学生的信息
//             3.可以通过id删除信息
//             4.删除后,遍历所有信息
//        5.查询id为"heima002" 的学生,若有,则年龄+1
        Student[] arr = new Student[3];

        Student stu1 = new Student("张三",001,12);
        Student stu2 = new Student("李四",002,13);
        Student stu3 = new Student("王五",003,15);
//      赋值很重要!!!
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;
//        1.再输入一个学生的信息,要求做id唯一性判断,
        Student stu4 = new Student("翠花",004,16);
        boolean flag = IfID(arr,stu4.getId());
        if(flag){
//           id exist--no add
            System.out.println("此id已存在,无法添加!");
        }else{
//           id none--add
//            若已满,则增容,未满则add
            int count =ifOver(arr);
            System.out.println("插入信息:");
                int id = 3;//删除的id
            if(arr.length == count){
//                new--add
                Student[] narr = createNewArr(arr);//创建新的数组
                narr[count] = stu4;
                //        遍历数组
//                for (int i = 0; i < narr.length; i++) {
//                    Student stu =narr[i];
//                    System.out.println(stu.getName() + "," + stu.getId() + "," +  stu.getGneder());
//                }
                showarr(narr);//展示//遍历的优化
                System.out.println("想删除的id为:" + id);
                Student[] delarr = delById(narr, id);//删除
//                4.删除后,遍历所有信息
                showarr(delarr);
//        5.查询id为"heima002" 的学生,若有,则年龄+1
                id = 2;
                addAge(delarr,id);
            }else{
                arr[count] = stu4;
                //        遍历数组
//                for (int i = 0; i < arr.length; i++) {
//                    Student stu =arr[i];
//                    System.out.println(stu.getName() + "," +  stu.getId() + "," +  stu.getGneder());
//                }
                showarr(arr);//展示//遍历的优化
                System.out.println("想删除的id为:" + id);
                Student[] delarr = delById(arr, id);
//                4.删除后,遍历所有信息
                showarr(delarr);
//        5.查询id为"heima002" 的学生,若有,则年龄+1
                id = 2;
                addAge(delarr,id);
            }
        }
    }

//    **********************************************************************************************************


    //        5.查询id为"heima002" 的学生,若有,则年龄+1
public static void addAge(Student[] arr,int id){
    int i = returni(arr, id);
    if(i != -1){
//        id存在--addage
        Student stu = arr[i];
        int newAge = stu.getAge() + 1;
        stu.setAge(newAge);
        System.out.println("增长年龄后,展示信息:");
       showarr(arr);
    }else{
        System.out.println("无此id的学生!");
    }
}

    //        遍历数组
    public static  void showarr(Student[] arr){
    for (int i = 0; i < arr.length; i++) {
        Student stu =arr[i];
        if(stu != null){//要判断非空!!!
            System.out.println(stu.getName() + "," + stu.getId() + "," +  stu.getAge());
        }
    }
}


    //判断id的唯一性
    public static int returni(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
//            需要判断是否为空
            if(stu != null){//要判断非空!!!
                int sid = stu.getId();
                if(sid == id){
                    return i;
                }
            }
        }
        return -1;
    }


// 3.可以通过id删除信息
//    delById
    public static Student[] delById(Student[] arr,int id){
//        System.out.println("请输入你想删除人的id:");
//        先查询有没有这个id--再删除
        Student[] delarr = new Student[arr.length-1];
        int i1 = returni(arr, id);
       if(i1 != -1){
           //若有此id--删除
           //新建一个数组,存放信息
               for (int i = 0; i < i1; i++) {
                   delarr[i] = arr[i];
               }
               for (int i = i1 + 1; i < arr.length; i++) {
                   delarr[i - 1] = arr[i];
               }
               return delarr;
       }else{
           //不删除
           System.out.println("此id不存在!");
           return null;
       }
    }


//创建新的数组
    public  static  Student[] createNewArr(Student[] arr){
        Student[] narr = new Student[arr.length + 1];
        for (int i = 0; i < arr.length; i++) {
            narr[i] = arr[i];
        }
            return narr;
    }

//判断数组是否已满
    public static int ifOver(Student[] arr){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr != null){
                count++;
            }
        }return count;
    }

    //判断id的唯一性
    public static boolean IfID(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
//            需要判断是否为空
            if(stu != null){//要判断非空!!!
                int sid = stu.getId();
                if(sid == id){
//                    判断是否有此id
                    return true;
                }
            }
        }
        return  false;
    }
}
